/*
 * Proyecto Manejador de Proyectos
 * @Autor Hector Hurtado
 */
package Mproyectos.controladores;

import Mproyectos.entidades.PalabraClave;
import Mproyectos.modelo.FachadaPalabraClave;
import java.io.Serializable;
import java.util.Collection;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

/**
 * Controla el CRUD la Palabra Clave
 */
@ManagedBean(name = "controladorPalabraClave")
@SessionScoped
public class ControladorPalabraClave implements Serializable {

    /**
     * la Palabra Clave en creacion o actualizacion
     */
    private PalabraClave palabraClave;
    /**
     * Fachada de acceso a los datos
     */
    @EJB
    private FachadaPalabraClave fachadaPalabraClave;

    /**
     * Constructor vacio
     */
    public ControladorPalabraClave() {
    }

    /**
     * Devuelve la Palabra Clave en creacion o edicion
     *
     * @return la Palabra Clave a crear o actualizar
     */
    public PalabraClave getPalabraClave() {

        // Si la Palabra Clave esta vacio crear uno 
        if (palabraClave == null) {
            palabraClave = new PalabraClave();
        }

        // Retorna la Palabra Clave actual
        return palabraClave;
    }

    /**
     * Actualiza la Palabra Clave en edicion o creacion
     *
     * @param la Palabra Clave actual
     */
    public void setPalabraClave(PalabraClave palabraClave) {
        this.palabraClave = palabraClave;
    }

    /**
     * Devuelve todos las Palabra Claves registradas en el sistema
     *
     * @return Lista de las Palabra Claves
     */
    public Collection<PalabraClave> getPalabraClaves() {
        return fachadaPalabraClave.listar();
    }

    /**
     * Adiciona a la unidad de persistencia la Palabra Clave actual
     *
     * @return Nombre de la pagina despues de crear
     */
    public String crear() {
        // Adiciona la Palabra Clave 
        fachadaPalabraClave.adicionar(getPalabraClave());
        // Se va para la pagina de listar la Palabra Clave 
        return "listar";
    }

    /**
     * Elimina la Palabra Clave especificado y retorna a la lista
     *
     * @param la Palabra Clave a eliminar
     * @return Pagina a la quer se devuelve
     */
    public String eliminar(PalabraClave palabraClave) {
        fachadaPalabraClave.eliminar(palabraClave);
        return "listar";
    }

    /**
     * Asigna la Palabra Clave especificado como la Palabra Clave actual y llama
     * a la pagina de actualizar
     *
     * @param la Palabra Clave a actualizar
     * @return devuelve a la pagina de actualizacion
     */
    public String prepararActualizar(PalabraClave palabraClave) {
        // Asigna la Palabra Clave seleccionado desde la lista como  el actual 
        this.palabraClave = palabraClave;
        return "actualizar";
    }

    /**
     * Actualiza los datos de la Palabra Clave actual
     *
     * @return devuelve a la lista
     */
    public String actualizar() {
        fachadaPalabraClave.actualizar(palabraClave);
        return "listar";
    }

    /**
     * Retorna la fachada de las Palabras Clave
     *
     * @return fachada de las Palabras Clave
     */
    public FachadaPalabraClave getFachadaPalabraClave() {
        return fachadaPalabraClave;
    }
}